let app = getApp();
Page({
  data: {
    questionId: '', // 问题ID
    url: app.globalData.url,
    userInfo: null, // 登录用户信息
    content: '', // 回复内容
    questionTitle: '', // 问题标题
    loading: false // 加载状态
  },

  onLoad(options) {
    console.log('回复页面加载，参数：', options);
    
    // 1. 获取问题ID
    if (!options || !options.id) {
      wx.showToast({ title: '参数错误，缺少问题ID', icon: 'none' });
      setTimeout(() => {
        wx.navigateBack();
      }, 1500);
      return;
    }
    
    this.setData({ 
      questionId: options.id,
      questionTitle: options.title || '问题' // 如果有标题参数就使用
    });
    
    console.log('问题ID:', this.data.questionId);
    
    // 2. 统一从本地存储获取用户信息（和第一个页面保持一致）
    const user = wx.getStorageSync('user'); // 关键：改用本地存储，而非全局变量
    
    // 3. 强制登录校验
    if (!user || !user.id) {
      wx.showToast({ title: '请先登录才能回复', icon: 'none' });
      setTimeout(() => {
        // 回跳地址携带问题ID，登录后能回到当前回复页
        wx.redirectTo({
          url: `/pages/my/login/login?backUrl=/pages/index/indexAnswer/AnsQues/reply/reply?id=${options.id}`
        });
      }, 1000);
      return;
    }
    
    this.setData({ 
      userInfo: user
    });
    
    // 4. 获取问题详情（可选，用于显示问题标题）
    this.fetchQuestionDetails();
  },
  
  // 获取问题详情
  fetchQuestionDetails() {
    const { questionId, url } = this.data;
    
    // 使用正确的API端点获取问题详情
    const apiUrl = `${url.endsWith('/') ? url : url + '/'}psych/ById/${questionId}`;
    
    wx.request({
      url: apiUrl,
      method: 'GET',
      success: (resp) => {
        if (resp.data && resp.data.code === 200 && resp.data.data) {
          const questionData = resp.data.data;
          if (questionData) {
            // 获取问题标题
            const title = questionData.title || questionData.psych?.title || '问题';
            this.setData({
              questionTitle: title
            });
          }
        }
      },
      fail: (err) => {
        console.error('获取问题详情失败:', err);
      }
    });
  },

  // 实时获取输入内容
  onInput(e) {
    this.setData({
      content: e.detail.value.trim()
    });
  },

  // 提交回复
  submitReply() {
    const { content, questionId, userInfo, url } = this.data;
    
    if (!content) {
      wx.showToast({ title: '回复内容不能为空', icon: 'none' });
      return;
    }
    
    if (!userInfo || !userInfo.id) {
      wx.showToast({ title: '用户信息异常，请重新登录', icon: 'none' });
      return;
    }
    
    if (!questionId) {
      wx.showToast({ title: '问题ID异常', icon: 'none' });
      return;
    }
    
    // 设置加载状态
    this.setData({ loading: true });
    
    // 修改API端点，使用正确的psyreply
    const apiUrl = url.endsWith('/') ? url + 'psyreply' : url + '/psyreply';
    
    console.log('API URL:', apiUrl);
    console.log('提交数据:', {
      qaId: questionId,
      replyContent: content,
      userId: userInfo.id,
      replyUserNickName: userInfo.nickname
    });
    
    wx.showLoading({ title: '提交中...' });
    
    wx.request({
      url: apiUrl,
      method: 'POST',
      header: { 'content-type': 'application/json' },
      data: {
        // 按后端要求的字段名提交
        qaId: parseInt(questionId),
        replyContent: content,
        userId: userInfo.id,
        replyTime: new Date().toISOString().split('T')[0] // 格式化为 yyyy-MM-dd
      },
      success: (resp) => {
        console.log('回复响应:', resp.data);
        
        if (resp.data && resp.data.code === 200) {
          wx.hideLoading();
          this.setData({ loading: false });
          wx.showToast({ title: '回复成功', icon: 'success' });
          setTimeout(() => {
            wx.navigateBack({
              delta: 1,
              success: () => {
                console.log('成功返回上一页');
                // 使用setTimeout确保页面完全加载后再刷新数据
                setTimeout(() => {
                  const pages = getCurrentPages();
                  const prevPage = pages[pages.length - 1];
                  console.log('当前页面栈:', pages.map(p => p.route));
                  
                  if (prevPage) {
                    console.log('找到上一页:', prevPage.route);
                    // 优先调用reloadData方法
                    if (typeof prevPage.reloadData === 'function') {
                      console.log('调用reloadData方法');
                      prevPage.reloadData();
                    } else if (typeof prevPage.onShow === 'function') {
                      console.log('调用onShow方法');
                      prevPage.onShow();
                    } else {
                      console.warn('上一页没有reloadData或onShow方法');
                      // 强制刷新页面
                      wx.startPullDownRefresh();
                    }
                  } else {
                    console.warn('无法获取上一页引用');
                  }
                }, 300);
              },
              fail: (err) => {
                console.error('返回上一页失败:', err);
                // 如果返回失败，尝试直接跳转到问题详情页
                wx.redirectTo({
                  url: `/pages/index/indexAnswer/AnsQues/AnsQues?id=${questionId}`
                });
              }
            });
          }, 500);
        } else {
          wx.hideLoading();
          this.setData({ loading: false });
          console.error('回复失败:', resp.data);
          wx.showToast({ 
            title: resp.data?.msg || '回复失败，请稍后重试', 
            icon: 'none' 
          });
        }
      },
      fail: (err) => {
        wx.hideLoading();
        this.setData({ loading: false });
        console.error('回复请求失败:', err);
        wx.showToast({ 
          title: '网络错误，请稍后重试', 
          icon: 'none' 
        });
      }
    });
  }
});